dbpath = "domain"
"""Table of domain info indexed by domain id."""
- domain_by_id = {}
+ domains = {}
def __init__(self):
# Hack alert. Python does not support mutual imports, but XendDomainInfo
def domain_lookup_by_name(self, name):
try:
return filter(lambda d: d.name == name,
- self.domain_by_id.values())[0]
+ self.domains.values())[0]
except IndexError, err:
return None
def domain_lookup_by_id(self, id):
- return self.domain_by_id.get(id)
+ return self.domains.get(id)
def onVirq(self, event, val):
"""Event handler for virq.
@return: domain
"""
dominfo = XendDomainInfo.vm_recreate(savedinfo, info)
- self.domain_by_id[dominfo.id] = dominfo
+ self.domains[dominfo.id] = dominfo
return dominfo
def _add_domain(self, info, notify=True):
@param notify: send a domain created event if true
"""
# Remove entries under the wrong id.
- for i, d in self.domain_by_id.items():
+ for i, d in self.domains.items():
if i != d.id:
- del self.domain_by_id[i]
+ del self.domains[i]
if i in self.domain_db:
del self.domain_db[i]
self.db.delete(i)
# But also need to make sure are indexed under correct name.
# What about entries under info.name ?
- if info.id in self.domain_by_id:
+ if info.id in self.domains:
notify = False
- self.domain_by_id[info.id] = info
+ self.domains[info.id] = info
self.domain_db[info.id] = info.sxpr()
self.sync_domain(info.id)
if notify:
@param id: domain id
@param notify: send a domain died event if true
"""
- info = self.domain_by_id.get(id)
+ info = self.domains.get(id)
if info:
- del self.domain_by_id[id]
+ del self.domains[id]
if notify:
eserver.inject('xend.domain.died', [info.name, info.id])
if id in self.domain_db:
for d in casualties:
id = str(d['dom'])
#print 'reap>', id
- dominfo = self.domain_by_id.get(id)
+ dominfo = self.domains.get(id)
name = (dominfo and dominfo.name) or '??'
if dominfo and dominfo.is_terminated():
#print 'reap> already terminated:', id
doms = self.xen_domains()
# Add entries for any domains we don't know about.
for (id, d) in doms.items():
- if id not in self.domain_by_id:
+ if id not in self.domains:
self.domain_lookup(id)
# Remove entries for domains that no longer exist.
# Update entries for existing domains.
do_domain_restarts = False
- for d in self.domain_by_id.values():
+ for d in self.domains.values():
info = doms.get(d.id)
if info:
d.update(info)
@param id: domain id
"""
- dominfo = self.domain_by_id.get(id)
+ dominfo = self.domains.get(id)
if dominfo:
self.domain_db[id] = dominfo.sxpr()
self.sync_domain(id)
"""
dominfo = self.xen_domain(id)
if dominfo:
- d = self.domain_by_id.get(id)
+ d = self.domains.get(id)
if d:
d.update(dominfo)
else:
@return: domain names
"""
self.refresh()
- doms = self.domain_by_id.values()
+ doms = self.domains.values()
doms.sort(lambda x, y: cmp(x.name, y.name))
return map(lambda x: x.name, doms)
@return: domain names
"""
self.refresh()
- return self.domain_by_id.keys()
+ return self.domains.keys()
- def domains(self):
+ def list(self):
"""Get list of domain objects.
@return: domain objects
"""
self.refresh()
- return self.domain_by_id.values()
+ return self.domains.values()
def domain_create(self, config):
"""Create a domain from a configuration.
"""
id = str(id)
self.refresh_domain(id)
- return self.domain_by_id.get(id)
+ return self.domains.get(id)
def domain_lookup(self, name):
name = str(name)
Destroys domains whose shutdowns have timed out.
"""
timeout = SHUTDOWN_TIMEOUT + 1
- for dominfo in self.domain_by_id.values():
+ for dominfo in self.domains.values():
if not dominfo.shutdown_pending:
# domain doesn't need shutdown
continue
"""Execute any scheduled domain restarts for domains that have gone.
"""
doms = self.xen_domains()
- for dominfo in self.domain_by_id.values():
+ for dominfo in self.domains.values():
if not dominfo.restart_pending():
continue
print 'domain_restarts>', dominfo.name, dominfo.id